package org.dromara.system.domain.bo;

import org.dromara.system.domain.Equipment;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;

/**
 * 生产设备业务对象 equipment
 *
 * @author Lion Li
 * @date 2025-09-15
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Equipment.class, reverseConvertGenerate = false)
public class EquipmentBo extends BaseEntity {

    /**
     * 主键
     */
    private Long id;

    /**
     * 所属装置ID
     */
    @NotNull(message = "所属装置ID不能为空", groups = {EditGroup.class})
    private Long sszz;

    /**
     * 设备名称
     */
    @NotBlank(message = "设备名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sbmc;

    /**
     * 设备位号
     */
    @NotBlank(message = "设备位号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sbwh;

    /**
     * 设备主次：0主设备，1附属设备，2其他
     */
    @NotBlank(message = "设备主次不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sbzc;

    /**
     * 设备类型：0动设备，1静设备，2电气，3仪表
     */
    @NotBlank(message = "设备类型不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sblx;

    /**
     * 是否特种设备：0否，1是
     */
    @NotNull(message = "是否特种设备不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long tzsbNy;

    /**
     * 特种设备分类：0压力容器，1压力管道，2锅炉
     */
    @NotNull(message = "特种设备分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long tzsbfl;

    /**
     * 是否为安全附件：0否，1是
     */
    @NotNull(message = "是否安全附件不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long aqfjNy;

    /**
     * 安全附件分类：0安全阀，1爆破片，2紧急切断，3压力表，4液位计，5测温仪表，6易熔塞，7其他
     */
    @NotNull(message = "安全附件分类不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long aqfjfl;

    /**
     * 设备等级：0一般，1关键，2核心
     */
    @NotNull(message = "设备等级不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long sbdj;

    /**
     * 设备状态：0运行，1停用，2备用，3维修，4待修，5过期
     */
    @NotNull(message = "设备状态不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long sbzt;

    /**
     * 规格型号
     */
    @NotBlank(message = "规格型号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sbxh;

    /**
     * 生产日期
     */
    @NotNull(message = "生产日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date scrq;

    /**
     * 使用年限
     */
    @NotBlank(message = "使用年限不能为空", groups = {AddGroup.class, EditGroup.class})
    private String synx;

    /**
     * 安装位置
     */
    @NotBlank(message = "安装位置不能为空", groups = {AddGroup.class, EditGroup.class})
    private String azwz;

    /**
     * 安装日期
     */
    @NotNull(message = "安装日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date azrq;

    /**
     * 启用日期
     */
    @NotNull(message = "启用日期不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date qyrq;

    /**
     * 维护保养周期
     */
    @NotBlank(message = "维护保养周期不能为空", groups = {AddGroup.class, EditGroup.class})
    private String whbyzq;

    /**
     * 维护保养单位：0天，1周，2旬，3月，4季，5半年，6年
     */
    @NotBlank(message = "维护保养单位不能为空", groups = {AddGroup.class, EditGroup.class})
    private String whbydw;

    /**
     * 责任人
     */
    @NotBlank(message = "责任人不能为空", groups = {AddGroup.class, EditGroup.class})
    private String zrr;

    /**
     * 联系方式
     */
    @NotBlank(message = "联系方式不能为空", groups = {AddGroup.class, EditGroup.class})
    private String lxfs;


}
